#include<iostream>
using namespace std;
const int minv = -1;
const int maxv = 100000000+1;
const int maxn = 500000+10;
#define qc ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
int n;

int mn[maxn],mx[maxn]; // 最小/大值前缀数组

void init(int a[],int nn,int v){
    for(int i=0;i<nn*2-1;i++)
        a[i] = v;
}

void update(int arr[],int (*op)(int,int),int k,int a){
    k += n-1;
    arr[k] = a;

    while(k>0){
        k = (k-1) / 2;
        arr[k] = op(arr[k*2+1],arr[k*2+2]);
    }
}

int query(int arr[],int (*op)(int,int),int v,int a,int b,int k,int l,int r){

    if(b<=l || r<=a) return v;

    if(a<=l && b>=r) return arr[k];
    else{
        int v1 = query(arr,op,v,a,b,k*2+1,l,(l+r)/2);
        int v2 = query(arr,op,v,a,b,k*2+2,(l+r)/2,r);
        return op(v1,v2);
    }
}

int min(int a,int b){
    return a < b ? a : b;
}
int max(int a,int b){
    return a > b ? a : b;
}

void solve(){
    int t,n_;
    cin >> n_;
    n = 1;
    while(n<n_) n*=2;

    init(mn,n,maxv);
    init(mx,n,minv);

    for(int i=0;i<n;i++){
        cin >> t;
        update(mn,min,i,t);
        update(mx,max,i,t);
    }

    long long sum = 0;
    for(int i=0;i<n_;i++){
        for(int j=i+1;j<n_;j++){
            int a = query(mx,max,minv,i,j+1,0,0,n);
            int b = query(mn,min,maxv,i,j+1,0,0,n);
            sum += a-b;
        }
    }
    cout << sum << endl;
}

int main(){
    qc;
//    freopen("data.in","r",stdin);
//    freopen("data.out","w",stdout);
    solve();
    return 0;
}